There exists a wide range of applications requiring the computation of differences between images. For example, differential image encoding algorithms may involve representation of a particular image in a series of images as simply the difference between the image and a preceding image. As another example, certain image processing techniques may incorporate computation of differences between pre-process and post-process images to the quantify the effects of a particular image processing procedure. These are just two simple examples. There may be many other present and future applications for the computation of image differences.
FIG. 1 is a block diagram of an illustrative computer system 100 in which computation of image differences may be performed. Computation of image differences may be applicable to different types of computer systems. FIG. 1 provides one example of such a system. As shown, computer system 100 includes a graphics card 102, a central processing unit (CPU) 104, a chipset comprising a northbridge chip 106 and a southbridge chip 108, system memory 110, peripheral component interconnect (PCI) slots 112, a disk drive controller 114, universal serial bus (USB) connectors 116, audio CODEC 118, a super I/O controller 120, and a keyboard controller 122. As shown in FIG. 1, graphics card 102 includes a graphics processing unit (GPU) 124 and local memory 126. Also, graphics card 102 is connected to a display 128 that may be part of computer system 100. Here, GPU 124 is a semiconductor chip designed to perform graphics processing operations associated with rendering an image that may be presented on display 128. While not explicitly shown in FIG. 1, computer system 100 may comprise more than one graphics card 102, and each graphics card 102 may comprise more than one GPU 124.
Computation of differences between images may involve various components in computer system 100. For example, computation of the difference between a first image and a second image may be performed by a processing unit such as CPU 104, GPU 124, or other equipment capable of processing tasks. The first image and second image may be stored in one or more storage units such as system memory 110 and memory 126. For instance, difference computation may be performed during execution of a software program involving image processing techniques. Such a software program may represent a video game, an image processing tool, a video recorder/player, a developer tool for adjusting components such as graphics card 102 and/or GPU 124, and others.
A significant challenge in computing image differences relates to the fact that often, the computation must take into account differences between images as perceived by the human eye. In other words, the simplistic pixel-by-pixel mathematical difference between two images may not be adequate. For example, the simple mathematical difference between two images may be expressed as:Diff Image=(Image 1)−(Image 2)  (Eq. 1)where Image 1 and Image 2 each represents a two-dimensional array of pixel values, and Diff Image also represents a two-dimensional array of pixel values. Each pixel of Diff Image may be obtained by subtracting a corresponding pixel in Image 1 by a corresponding pixel in Image 2. Here, each pixel value may represent a brightness value for a black and white image, a particular channel for a color image, or some other value. For example, the channel may represent a brightness channel, a chroma channel, a particular channel in an RGB (red, green, blue) scheme such as a red channel, a green channel, a blue channel, etc. As presented in the equation above, this particular difference image only represents a simple subtraction of Image 1 and Image 2. Such a difference image, while easily calculated, may not adequately represent the difference between Image 1 and Image 2 as perceived by human vision.
Various techniques have been developed in the attempt to present more useful measures of the difference between two images. One such technique involves squaring the arithmetic difference between the images:Diff Image((Image 1)−(Image 2))^2  (Eq. 2)
The effect of this squaring step is that differences of greater magnitude are amplified more than differences of lesser magnitude. Consequently, larger differences are accentuated. Other variations for computing difference between images also exist.
However, these and other traditional techniques for computing image differences fail to take into account perceptual effects that may be related to locality of image differences to other image differences, as well as locality of image difference to edges. That is, human visual perception is more sensitive to image differences when those image differences are located closer to other image differences. Also, human visual perception is more sensitive to image differences when those image differences are located closer to edges—such as areas characterized by polygon edges or texture changes—as opposed areas with little or no changes. By ignoring effects of locality of image differences to other image differences and locality of image differences to edges, traditional image difference techniques fail to exploit significant characteristics of human visual perception. The many present and future applications in which computation of image differences is required may all benefit tremendously from fundamental improvements in the computation of image differences that take into account such characteristics of human visual perception. Thus, there exists a significant need for improved techniques in image difference computation that to take into account locality of image differences to other image differences and/or locality of image differences to edges.